/**
 * 判断应用升级模块，从url地址下载升级描述文件到本地local路径
 * 升级文件为JSON格式数据，如下：
{
  "appid":"HelloH5",
  action: "all", // 整包更新 = all ，应用资源独立升级 = sth
  "iOS":{
    "version":"iOS新版本号，如：1.0.0",
    "note":"iOS新版本描述信息，多行使用\n分割",
    "url":"Appstore路径，如：itms-apps://itunes.apple.com/cn/app/hello-h5+/id682211190?l=zh&mt=8"
  },
  "Android":{
    "version":"Android新版本号，如：1.0.1",
    "note":"Android新版本描述信息，多行使用\n分割",
    "url":"apk文件下载地址，如：http://www.dcloud.io/helloh5p/HelloH5.apk"
  }
}
 */
function checkUpdate (checkUrl) {
  // 锁定屏幕方向
  plus.screen.lockOrientation('portrait-primary')
  plus.runtime.getProperty(plus.runtime.appid,inf=>{
      // console.log(JSON.stringify(inf));
      //存储版本号到本地
      // localStorage.version =  inf.version;
      // 检测升级
	  let formdata = {
          appid:inf.appid,
          version: inf.version ,
          imei: plus.device.imei,
		  osname : plus.os.name
        };
		 console.log(formdata)
      uni.request({
        url: checkUrl, // 检查更新的服务器地址
        data: formdata,
        method: "POST",
        success: res => {
		 console.log('进入热更新');
          if (res.statusCode == 200) {
			 let ret = res.data; 
			   console.log(666)
			   console.log(ret)
			 if(ret.code == 1){ 
				 const openData = plus.os.name === 'iOS' ? ret.data.iOS : ret.data.Android // 下载文件地址 ios以"itms-apps://"开头，后面跟appstore上应用地址。
				// console.log(openData)
				if(openData.is_force)
				{
					// 提醒用户更新
					uni.showModal({
					  title: '更新提示',
					  content: openData.note ? openData.note : '是否选择更新',
					  success: showResult => {
					    if (showResult.confirm) {
					      if (openData.action === 'all') 			   {
					        // 整包更新
					        // plus.runtime.openURL(openUrl)
					        updateAppAll(openData.url)
					      } else {
					        // 应用资源独立升级
					        downWgt(openData.wgt_url) // 下载升级包
					      }
										   
					    }
					  }
					})
				}else{
					if (openData.action === 'all') 			   {
					  // 整包更新
					  // plus.runtime.openURL(openUrl)
					  updateAppAll(openData.url)
					} else {
					  // 应用资源独立升级
					  downWgt_jm(openData.wgt_url) // 下载升级包
					}
				}	
				  
			 } 
          }
		  
        },
        fail:(err) => {
            console.log(JSON.stringify(err));
        }
      })
  })
  
}
 
/** 整包更新 */
function updateAppAll (openUrl) {
  if (plus.os.name === 'iOS') {
    plus.runtime.openURL(openUrl)
  } else {
    var dtask = plus.downloader.createDownload(openUrl, {}, function (d, status) {
      if (status === 200) {
      // 下载成功
        var path = d.filename
       // console.log(d.filename)
        plus.runtime.install(path) // 安装下载的apk文件
		
      } else {
      // 下载失败
        alert('Download failed: ' + status)
      }
    })
    dtask.start();
  }
}
 
/** App资源在线升级更新 */
// 下载wgt文件
function downWgt (wgtUrl) {
  plus.nativeUI.showWaiting('下载更新文件...')
  console.log(wgtUrl);
  plus.downloader.createDownload(wgtUrl, { filename: '_doc/update/' }, function (d, status) {
    if (status == 200) {
      console.log('下载更新文件成功：' + d.filename)
      installWgt(d.filename) // 安装wgt包
    } else {
        console.log(JSON.stringify(status) );
        console.log('下载更新文件失败！')
      plus.nativeUI.alert('下载更新文件失败！')
    }
    plus.nativeUI.closeWaiting()
  }).start()
}
// 更新应用资源包（wgt文件）
function installWgt (path) {
  plus.nativeUI.showWaiting('安装更新文件...')
  plus.runtime.install(path, {force : true}, function () {
    plus.nativeUI.closeWaiting()
    console.log('安装更新文件成功！')
    plus.nativeUI.alert('应用资源更新完成！', function () {
      plus.runtime.restart()
    })
  }, function (e) {
    plus.nativeUI.closeWaiting()
    console.log('安装更新文件失败[' + e.code + ']：' + e.message)
    plus.nativeUI.alert('安装更新文件失败[' + e.code + ']：' + e.message)
  })
}

function downWgt_jm (wgtUrl) {
  // plus.nativeUI.showWaiting('downWgt_jm...')
  plus.downloader.createDownload(wgtUrl, { filename: '_doc/update/' }, function (d, status) {
    if (status == 200) {
      console.log('下载更新文件成功：' + d.filename)
      installWgt_jm(d.filename) // 安装wgt包
    } else {
        console.log(JSON.stringify(status) );
        console.log('下载更新文件失败！')
    }
  }).start()
}
// 更新应用资源包（wgt文件）
function installWgt_jm (path) {
  plus.runtime.install(path, {force : true}, function () {
    console.log('安装更新文件成功！')
    plus.nativeUI.alert('应用资源更新完成！', function () {
      plus.runtime.restart()
    })
  }, function (e) {
    console.log('安装更新文件失败[' + e.code + ']：' + e.message)
  })
}

export default {
	checkUpdate,
	updateAppAll,
	downWgt,
	installWgt,
}


